package model.tps;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.List;

import model.materiasYCatedras.AlumnoEnCatedra;

public class EntregaTpPorAlumno implements Comparable<EntregaTpPorAlumno> {
	private Calendar fechaEntrega;
	private int nota;
	private Tp unTp;
	private AlumnoEnCatedra alumno;

	// Getters && Setters //

	public Calendar getFechaEntrega() {
		return fechaEntrega;
	}

	public void setFechaEntrega(Calendar fechaEntrega) {
		this.fechaEntrega = fechaEntrega;
	}

	public int getNota() {
		return nota;
	}

	public void setNota(int nota) {
		this.nota = nota;
	}

	public Tp getUnTp() {
		return unTp;
	}

	public void setUnTp(Tp unTp) {
		this.unTp = unTp;
	}

	public AlumnoEnCatedra getAlumno() {
		return alumno;
	}

	public void setAlumno(AlumnoEnCatedra alumno) {
		this.alumno = alumno;
	}

	// Fin Getters && Setters //

	public EntregaTpPorAlumno(Tp unTp, AlumnoEnCatedra alumno, Integer nota) {
		this.setUnTp(unTp);
		this.setAlumno(alumno);
		this.setNota(nota);
	}

	public EntregaTpPorAlumno(Tp unTp, AlumnoEnCatedra alumno, Integer nota,
			Calendar fecha) {
		this.setUnTp(unTp);
		this.setAlumno(alumno);
		this.setNota(nota);
		this.setFechaEntrega(fecha);
	}

	public Boolean primerApellidoPorOrdenAlfabetico(String unApellido,
			String otroApellido) {
		List<String> listaS = new ArrayList<String>();
		listaS.add(unApellido);
		listaS.add(otroApellido);
		String menor = Collections.min(listaS);
		return menor.equals(unApellido);
	}

	@Override
	public int compareTo(EntregaTpPorAlumno unaEntrega) {
		if (this.getNota() > unaEntrega.getNota()) {
			return 1;
		} else {
			if (this.getNota() == unaEntrega.getNota()
					&& this.getFechaEntrega().equals(unaEntrega.fechaEntrega)
					&& this.primerApellidoPorOrdenAlfabetico(this.getAlumno()
							.getApellido(), unaEntrega.getAlumno()
							.getApellido())) {
				return 1;

			} else {
				return -1;
			}
		}

	}

}
